//package com.mi.rule.db.core;
//
//import com.baomidou.mybatisplus.annotation.TableField;
//import com.baomidou.mybatisplus.annotation.TableId;
//import com.baomidou.mybatisplus.annotation.TableName;
//import lombok.Data;
//import org.springframework.core.annotation.AnnotationUtils;
//
//import java.lang.reflect.Field;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.Objects;
//
///**
// * @author 王永吉
// * @date 2020-01-14
// */
//@Data
//public class MiHelp {
//    //      表名
//    public String tableName;
//    //      主键字段
//    public String idColumn;
//    //      主键值
//    public String idValue;
//    //      主键值
//    public String idProperty;
//    // <实体的类非空属性，对应的数据库字段>
//    public HashMap<String, Object> column = new HashMap<>();
//    // <数据库字段，值>
//    public HashMap<String, Object> updateColumn = new HashMap<>();
//    //    IDS
//    public ArrayList<Object> ids = new ArrayList<>();
//
//    public static MiHelp create(Object entity) {
//        MiHelp miHelp = new MiHelp();
//        miHelp.setTableName(entity);
//        miHelp.setColumn(entity);
//        return miHelp;
//    }
////
////    public static MiHelp create(ArrayList<Object> entityList) {
////        Object entity = entityList.get(0);
////        MiHelp miHelp = new MiHelp();
////        miHelp.setTableName(entity);
////        miHelp.setColumn(entity);
////        miHelp.setIds(entityList);
////        return miHelp;
////    }
//
//    public static <T> String getTableName(Class<T> tClass) {
//        return Objects.requireNonNull(AnnotationUtils.findAnnotation(tClass, TableName.class)).value();
//    }
//
//    public static <T> String getTableId(Class<T> tClass) {
//        return Objects.requireNonNull(AnnotationUtils.findAnnotation(tClass, TableId.class)).value();
//    }
//
////    private <T> void setIds(List<T> listEntity) {
////        Field field = null;
////
////        Class<?> aClass = listEntity.get(0).getClass();
////        Field[] declaredFields = aClass.getDeclaredFields();
////        for (Field declaredField : declaredFields) {
////            TableId tableId = declaredField.getAnnotation(TableId.class);
////            if (tableId != null) {
////                field = declaredField;
////                break;
////            }
////        }
////
////        for (T t : listEntity) {
////            try {
////                Object idValue = field.get(t);
////                if (idValue != null) {
////                    this.ids.add(idValue);
////                }
////            } catch (IllegalAccessException ignored) {
////            }
////        }
////    }
//
//    //返回注解的表名
//    public void setTableName(Object entity) {
//        this.tableName = Objects.requireNonNull(AnnotationUtils.findAnnotation(entity.getClass(), TableName.class)).value();
//    }
//
//    /**
//     * 解析设置需要的值
//     */
//    private void setColumn(Object entity) {
//        Class<?> mClass = entity.getClass();
//        Field[] declaredFields = mClass.getDeclaredFields();
//        for (Field declaredField : declaredFields) {
//            TableId tableId = declaredField.getAnnotation(TableId.class);
//            TableField tableField = declaredField.getAnnotation(TableField.class);
//            String column = "";
//
//            //空属性不存储
//            if (tableField == null && tableId == null) continue;
//            if (tableField != null && !tableField.exist()) continue;
//            declaredField.setAccessible(true);
//
//
//            //设置ID
//            if (tableId != null) {
//                try {
//                    this.idColumn = tableId.value();
//                    this.idProperty = declaredField.getName();
//                    Object o = declaredField.get(entity);
//                    if (o != null) {
//                        this.idValue = o.toString();
//                    }
//                } catch (IllegalAccessException ignored) {
//                }
//            }
//
//
//            //column <非空属性，字段>
//            //updateEntity <非空属性字段，值>
//            if (tableId != null) column = tableId.value();
//            if (tableField != null) column = tableField.value();
//            try {
//                Object tableValue = declaredField.get(entity);
//                if (tableValue != null) {
//                    this.column.put(declaredField.getName(), column);
//                    this.updateColumn.put(column, tableValue);
//                }
//            } catch (IllegalAccessException ignored) {
//            }
//        }
//
//    }
//
//}
